package com.arrayofsky.gateway.server;

import io.netty.channel.Channel;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.SimpleChannelInboundHandler;

/**
 * @Author: gaoyifeng
 * @Description:
 * @Date Created in 2024-06-18-14:39
 * @Modified By:
 */
public abstract class BaseHandler<T> extends SimpleChannelInboundHandler<T> {


    /**
     * SimpleChannelInboundHandler：
     * SimpleChannelInboundHandler是Netty提供的一个抽象类，用于处理特定类型的消息。
     * 它继承自ChannelInboundHandlerAdapter类，并提供了默认的channelRead0方法。
     *
     * ChannelHandlerContext：
     * ChannelHandlerContext是Netty中处理器上下文的对象，它包含了与ChannelHandler相关的信息和操作方法。
     *
     */
    @Override
    protected void channelRead0(ChannelHandlerContext ctx, T msg) throws Exception {
        session(ctx, ctx.channel(), msg);
    }

    protected abstract void session(ChannelHandlerContext ctx, final Channel channel, T request);

}
